home *** CD-ROM | disk | FTP | other *** search
- overlay "tex5"
- #define EXTERN extern
- #include "texd.h"
-
- zappendtovlis ( b )
- halfword b ;
- {r_appendtovlis
- scaled d ;
- halfword p ;
- if ( curlist .auxfield > - 65536000 )
- {
- d = mem [(long) eqtb [ 3527 ] .hh .v.RH + 1 ] .cint - curlist .auxfield - mem [(long)
- b + 3 ] .cint ;
- if ( d < eqtb [ 5703 ] .cint )
- p = newparamglue ( 0 ) ;
- else {
- p = newskipparam ( 1 ) ;
- mem [(long) tempptr + 1 ] .cint = d ;
- }
- mem [(long) curlist .tailfield ] .hh .v.RH = p ;
- curlist .tailfield = p ;
- }
- mem [(long) curlist .tailfield ] .hh .v.RH = b ;
- curlist .tailfield = b ;
- curlist .auxfield = mem [(long) b + 2 ] .cint ;
- }
- halfword newnoad () { register halfword Result; r_newnoad
- long p ;
- p = getnode ( 4 ) ;
- mem [ p ] .hh.b0 = 16 ;
- mem [ p ] .hh.b1 = 0 ;
- mem [ p + 1 ] .hh = emptyfield ;
- mem [ p + 3 ] .hh = emptyfield ;
- mem [ p + 2 ] .hh = emptyfield ;
- Result = p ;
- return(Result) ;
- }
- halfword znewstyle ( s )
- smallnumber s ;
- {register halfword Result; r_newstyle
- long p ;
- p = getnode ( 3 ) ;
- mem [ p ] .hh.b0 = 14 ;
- mem [ p ] .hh.b1 = s ;
- mem [ p + 1 ] .cint = 0 ;
- mem [ p + 2 ] .cint = 0 ;
- Result = p ;
- return(Result) ;
- }
- halfword newchoice () { register halfword Result; r_newchoice
- long p ;
- p = getnode ( 3 ) ;
- mem [ p ] .hh.b0 = 15 ;
- mem [ p ] .hh.b1 = 0 ;
- mem [ p + 1 ] .hh .v.LH = 0 ;
- mem [ p + 1 ] .hh .v.RH = 0 ;
- mem [ p + 2 ] .hh .v.LH = 0 ;
- mem [ p + 2 ] .hh .v.RH = 0 ;
- Result = p ;
- return(Result) ;
- }
- showinfo () { r_showinfo
- shownodelist ( mem [(long) tempptr ] .hh .v.LH ) ;
- }
- halfword zfractionrule ( t )
- scaled t ;
- {register halfword Result; r_fractionrule
- halfword p ;
- p = newrule () ;
- mem [(long) p + 3 ] .cint = t ;
- mem [(long) p + 2 ] .cint = 0 ;
- Result = p ;
- return(Result) ;
- }
- halfword zoverbar ( b , k , t )
- halfword b ;
- scaled k , t ;
- {register halfword Result; r_overbar
- halfword p, q ;
- p = newkern ( k ) ;
- mem [(long) p ] .hh .v.RH = b ;
- q = fractionrule ( t ) ;
- mem [(long) q ] .hh .v.RH = p ;
- p = newkern ( t ) ;
- mem [(long) p ] .hh .v.RH = q ;
- Result = vpackage ( p , 0 , 1 , 1073741823 ) ;
- return(Result) ;
- }
- halfword zcharbox ( f , c )
- internalfont f ;
- quarterword c ;
- {register halfword Result; r_charbox
- fourquarters q ;
- eightbits hd ;
- halfword b, p ;
- q = fontinfo [ charbase [ f ] + c ] .qqqq ;
- hd = q .b1 ;
- b = newnullbox () ;
- mem [(long) b + 1 ] .cint = fontinfo [ widthbase [ f ] + q .b0 ] .cint + fontinfo
- [ italicbase [ f ] + ( q .b2 ) / 4 ] .cint ;
- mem [(long) b + 3 ] .cint = fontinfo [ heightbase [ f ] + ( hd ) / 16 ] .cint ;
- mem [(long) b + 2 ] .cint = fontinfo [ depthbase [ f ] + ( hd ) % 16 ] .cint ;
- p = getavail () ;
- mem [(long) p ] .hh.b1 = c ;
- mem [(long) p ] .hh.b0 = f ;
- mem [(long) b + 5 ] .hh .v.RH = p ;
- Result = b ;
- return(Result) ;
- }
- zstackintobox ( b , f , c )
- halfword b ;
- internalfont f ;
- quarterword c ;
- {r_stackintobox
- halfword p ;
- p = charbox ( f , c ) ;
- mem [(long) p ] .hh .v.RH = mem [(long) b + 5 ] .hh .v.RH ;
- mem [(long) b + 5 ] .hh .v.RH = p ;
- mem [(long) b + 3 ] .cint = mem [(long) p + 3 ] .cint ;
- }
- scaled zheightplusde ( f , c )
- internalfont f ;
- quarterword c ;
- {register scaled Result; r_heightplusde
- fourquarters q ;
- eightbits hd ;
- q = fontinfo [ charbase [ f ] + c ] .qqqq ;
- hd = q .b1 ;
- Result = fontinfo [ heightbase [ f ] + ( hd ) / 16 ] .cint + fontinfo [
- depthbase [ f ] + ( hd ) % 16 ] .cint ;
- return(Result) ;
- }
- halfword zvardelimiter ( d , s , v )
- halfword d ;
- smallnumber s ;
- scaled v ;
- {/* 40 22 */ register halfword Result; r_vardelimiter
- halfword b ;
- internalfont f, g ;
- quarterword c, x, y ;
- integer m, n ;
- scaled u ;
- scaled w ;
- fourquarters q ;
- eightbits hd ;
- fourquarters r ;
- smallnumber z ;
- boolean largeattempt ;
- f = 0 ;
- w = 0 ;
- largeattempt = false ;
- z = mem [(long) d ] .qqqq .b0 ;
- x = mem [(long) d ] .qqqq .b1 ;
- while ( true ) {
- if ( ( z != 0 ) || ( x != 0 ) )
- {
- z = z + s + 16 ;
- do { z = z - 16 ;
- g = eqtb [ 4579 + z ] .hh .v.RH ;
- if ( g != 0 )
- {
- y = x ;
- lab22: if ( ( y >= fontbc [ g ] ) && ( y <= fontec [ g ] ) )
- {
- q = fontinfo [ charbase [ g ] + y ] .qqqq ;
- if ( ( q .b0 > 0 ) )
- {
- if ( ( ( q .b2 ) % 4 ) == 3 )
- {
- f = g ;
- c = y ;
- goto lab40 ;
- }
- hd = q .b1 ;
- u = fontinfo [ heightbase [ g ] + ( hd ) / 16 ] .cint + fontinfo
- [ depthbase [ g ] + ( hd ) % 16 ] .cint ;
- if ( u > w )
- {
- f = g ;
- c = y ;
- w = u ;
- if ( u >= v )
- goto lab40 ;
- }
- if ( ( ( q .b2 ) % 4 ) == 2 )
- {
- y = q .b3 ;
- goto lab22 ;
- }
- }
- }
- }
- } while ( ! ( z < 16 ) ) ;
- }
- if ( largeattempt )
- goto lab40 ;
- largeattempt = true ;
- z = mem [(long) d ] .qqqq .b2 ;
- x = mem [(long) d ] .qqqq .b3 ;
- }
- lab40: if ( f != 0 )
- if ( ( ( q .b2 ) % 4 ) == 3 )
- {
- b = newnullbox () ;
- mem [(long) b ] .hh.b0 = 1 ;
- r = fontinfo [ extenbase [ f ] + q .b3 ] .qqqq ;
- c = r .b3 ;
- u = heightplusde ( f , c ) ;
- w = 0 ;
- q = fontinfo [ charbase [ f ] + c ] .qqqq ;
- mem [(long) b + 1 ] .cint = fontinfo [ widthbase [ f ] + q .b0 ] .cint +
- fontinfo [ italicbase [ f ] + ( q .b2 ) / 4 ] .cint ;
- c = r .b2 ;
- if ( c != 0 )
- w = w + heightplusde ( f , c ) ;
- c = r .b1 ;
- if ( c != 0 )
- w = w + heightplusde ( f , c ) ;
- c = r .b0 ;
- if ( c != 0 )
- w = w + heightplusde ( f , c ) ;
- n = 0 ;
- if ( u > 0 )
- while ( w < v ) {
- w = w + u ;
- incr ( n ) ;
- if ( r .b1 != 0 )
- w = w + u ;
- }
- c = r .b2 ;
- if ( c != 0 )
- stackintobox ( b , f , c ) ;
- c = r .b3 ;
- for ( m = 1 ; m <= n ; m ++ )
- stackintobox ( b , f , c ) ;
- c = r .b1 ;
- if ( c != 0 )
- {
- stackintobox ( b , f , c ) ;
- c = r .b3 ;
- for ( m = 1 ; m <= n ; m ++ )
- stackintobox ( b , f , c ) ;
- }
- c = r .b0 ;
- if ( c != 0 )
- stackintobox ( b , f , c ) ;
- mem [(long) b + 2 ] .cint = w - mem [(long) b + 3 ] .cint ;
- }
- else b = charbox ( f , c ) ;
- else {
- b = newnullbox () ;
- mem [(long) b + 1 ] .cint = eqtb [ 5712 ] .cint ;
- }
- mem [(long) b + 4 ] .cint = half ( mem [(long) b + 3 ] .cint - mem [(long) b + 2 ] .cint ) -
- fontinfo [ 22 + parambase [ eqtb [ 4581 + s ] .hh .v.RH ] ] .cint ;
- Result = b ;
- return(Result) ;
- }
- halfword zrebox ( b , w )
- halfword b ;
- scaled w ;
- {register halfword Result; r_rebox
- halfword p ;
- internalfont f ;
- scaled v ;
- fourquarters qi;
- if ( ( mem [(long) b + 1 ] .cint != w ) && ( mem [(long) b + 5 ] .hh .v.RH != 0 ) )
- {
- if ( mem [(long) b ] .hh.b0 == 1 )
- b = hpack ( b , 0 , 1 ) ;
- p = mem [(long) b + 5 ] .hh .v.RH ;
- if ( ( ( p >= himemmin ) ) && ( mem [(long) p ] .hh .v.RH == 0 ) )
- {
- f = mem [(long) p ] .hh.b0 ;
- /* v = fontinfo [ widthbase [ f ] + fontinfo [ charbase [ f ] + mem [(long) p ]
- .hh.b1 ] .qqqq .b0 ] .cint ; */
- qi = fontinfo [ charbase [ f ] + mem [(long) p ] .hh.b1 ] .qqqq;
- v = fontinfo [ widthbase [ f ] +qi.b0 ] .cint ;
- if ( v != mem [(long) b + 1 ] .cint )
- mem [(long) p ] .hh .v.RH = newkern ( mem [(long) b + 1 ] .cint - v ) ;
- }
- freenode ( b , 7 ) ;
- b = newglue ( 12 ) ;
- mem [(long) b ] .hh .v.RH = p ;
- while ( mem [(long) p ] .hh .v.RH != 0 ) p = mem [(long) p ] .hh .v.RH ;
- mem [(long) p ] .hh .v.RH = newglue ( 12 ) ;
- Result = hpack ( b , w , 0 ) ;
- }
- else {
- mem [(long) b + 1 ] .cint = w ;
- Result = b ;
- }
- return(Result) ;
- }
- halfword zmathglue ( g , m )
- halfword g ;
- scaled m ;
- {register halfword Result; r_mathglue
- halfword p ;
- integer n ;
- scaled f ;
- n = xovern ( m , 65536 ) ;
- f = remainder ;
- p = getnode ( 4 ) ;
- mem [(long) p + 1 ] .cint = nxplusy ( n , mem [(long) g + 1 ] .cint , xnoverd ( mem [(long) g
- + 1 ] .cint , f , 65536 ) ) ;
- mem [(long) p ] .hh.b0 = mem [(long) g ] .hh.b0 ;
- if ( mem [(long) p ] .hh.b0 == 0 )
- mem [(long) p + 2 ] .cint = nxplusy ( n , mem [(long) g + 2 ] .cint , xnoverd ( mem [(long) g
- + 2 ] .cint , f , 65536 ) ) ;
- else mem [(long) p + 2 ] .cint = mem [(long) g + 2 ] .cint ;
- mem [(long) p ] .hh.b1 = mem [(long) g ] .hh.b1 ;
- if ( mem [(long) p ] .hh.b1 == 0 )
- mem [(long) p + 3 ] .cint = nxplusy ( n , mem [(long) g + 3 ] .cint , xnoverd ( mem [(long) g
- + 3 ] .cint , f , 65536 ) ) ;
- else mem [(long) p + 3 ] .cint = mem [(long) g + 3 ] .cint ;
- Result = p ;
- return(Result) ;
- }
- zmathkern ( p , m )
- halfword p ;
- scaled m ;
- {r_mathkern
- integer n ;
- scaled f ;
- if ( mem [(long) p ] .hh.b1 == 99 )
- {
- n = xovern ( m , 65536 ) ;
- f = remainder ;
- mem [(long) p + 1 ] .cint = nxplusy ( n , mem [(long) p + 1 ] .cint , xnoverd ( mem [(long)
- p + 1 ] .cint , f , 65536 ) ) ;
- mem [(long) p ] .hh.b1 = 0 ;
- }
- }
- flushmath () { r_flushmath
- flushnodelis ( mem [(long) curlist .headfield ] .hh .v.RH ) ;
- flushnodelis ( curlist .auxfield ) ;
- mem [(long) curlist .headfield ] .hh .v.RH = 0 ;
- curlist .tailfield = curlist .headfield ;
- curlist .auxfield = 0 ;
- }
- halfword zcleanbox ( p , s )
- halfword p ;
- smallnumber s ;
- {/* 40 */ register halfword Result; r_cleanbox
- halfword q ;
- smallnumber savestyle ;
- halfword x ;
- halfword r ;
- switch ( mem [(long) p ] .hh .v.RH )
- {case 1 :
- {
- curmlist = newnoad () ;
- mem [(long) curmlist + 1 ] = mem [(long) p ] ;
- }
- break ;
- case 2 :
- {
- q = mem [(long) p ] .hh .v.LH ;
- goto lab40 ;
- }
- break ;
- case 3 :
- curmlist = mem [(long) p ] .hh .v.LH ;
- break ;
- default :
- {
- q = newnullbox () ;
- goto lab40 ;
- }
- break ;
- }
- savestyle = curstyle ;
- curstyle = s ;
- mlistpenalti = false ;
- mlisttohlist () ;
- q = mem [(long) memtop - 3 ] .hh .v.RH ;
- curstyle = savestyle ;
- {
- if ( curstyle < 4 )
- cursize = 0 ;
- else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
- curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint , 18 ) ;
- }
- lab40: if ( ( q >= himemmin ) || ( q == 0 ) )
- x = hpack ( q , 0 , 1 ) ;
- else if ( ( mem [(long) q ] .hh .v.RH == 0 ) && ( mem [(long) q ] .hh.b0 <= 1 ) && ( mem
- [ q + 4 ] .cint == 0 ) )
- x = q ;
- else x = hpack ( q , 0 , 1 ) ;
- q = mem [(long) x + 5 ] .hh .v.RH ;
- if ( ( q >= himemmin ) )
- {
- r = mem [(long) q ] .hh .v.RH ;
- if ( r != 0 )
- if ( mem [(long) r ] .hh .v.RH == 0 )
- if ( ! ( r >= himemmin ) )
- if ( mem [(long) r ] .hh.b0 == 11 )
- {
- freenode ( r , 2 ) ;
- mem [(long) q ] .hh .v.RH = 0 ;
- }
- }
- Result = x ;
- return(Result) ;
- }
- zfetch ( a )
- halfword a ;
- {r_fetch
- curc = mem [(long) a ] .hh.b1 ;
- curf = eqtb [ 4579 + mem [(long) a ] .hh.b0 + cursize ] .hh .v.RH ;
- if ( curf == 0 )
- {
- {
- if ( interaction == 3 )
- wakeuptermin () ;
- printnl ( 133 ) ;
- print ( 206 ) ;
- }
- printsize ( cursize ) ;
- printchar ( 32 ) ;
- printint ( mem [(long) a ] .hh.b0 ) ;
- print ( 737 ) ;
- printASCII ( curc ) ;
- printchar ( 41 ) ;
- {
- helpptr = 4 ;
- helpline [ 3 ] = 738 ;
- helpline [ 2 ] = 739 ;
- helpline [ 1 ] = 740 ;
- helpline [ 0 ] = 741 ;
- }
- error () ;
- curi = nullcharacte ;
- mem [(long) a ] .hh .v.RH = 0 ;
- }
- else {
- if ( ( curc >= fontbc [ curf ] ) && ( curc <= fontec [ curf ] ) )
- curi = fontinfo [ charbase [ curf ] + curc ] .qqqq ;
- else curi = nullcharacte ;
- if ( ! ( ( curi .b0 > 0 ) ) )
- {
- charwarning ( curf , curc ) ;
- mem [(long) a ] .hh .v.RH = 0 ;
- }
- }
- }
- zmakeover ( q )
- halfword q ;
- {r_makeover
- mem [(long) q + 1 ] .hh .v.LH = overbar ( cleanbox ( q + 1 , 2 * ( curstyle / 2 )
- + 1 ) , 3 * fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ] ]
- .cint , fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ] ]
- .cint ) ;
- mem [(long) q + 1 ] .hh .v.RH = 2 ;
- }
- zmakeunder ( q )
- halfword q ;
- {r_makeunder
- halfword p, x, y ;
- scaled delta ;
- x = cleanbox ( q + 1 , curstyle ) ;
- p = newkern ( 3 * fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh
- .v.RH ] ] .cint ) ;
- mem [(long) x ] .hh .v.RH = p ;
- mem [(long) p ] .hh .v.RH = fractionrule ( fontinfo [ 8 + parambase [ eqtb [ 4582
- + cursize ] .hh .v.RH ] ] .cint ) ;
- y = vpackage ( x , 0 , 1 , 1073741823 ) ;
- delta = mem [(long) y + 3 ] .cint + mem [(long) y + 2 ] .cint + fontinfo [ 8 + parambase
- [ eqtb [ 4582 + cursize ] .hh .v.RH ] ] .cint ;
- mem [(long) y + 3 ] .cint = mem [(long) x + 3 ] .cint ;
- mem [(long) y + 2 ] .cint = delta - mem [(long) y + 3 ] .cint ;
- mem [(long) q + 1 ] .hh .v.LH = y ;
- mem [(long) q + 1 ] .hh .v.RH = 2 ;
- }
- zmakevcenter ( q )
- halfword q ;
- {r_makevcenter
- halfword v ;
- scaled delta ;
- v = mem [(long) q + 1 ] .hh .v.LH ;
- if ( mem [(long) v ] .hh.b0 != 1 )
- confusion ( 397 ) ;
- delta = mem [(long) v + 3 ] .cint + mem [(long) v + 2 ] .cint ;
- mem [(long) v + 3 ] .cint = fontinfo [ 22 + parambase [ eqtb [ 4581 + cursize ]
- .hh .v.RH ] ] .cint + half ( delta ) ;
- mem [(long) v + 2 ] .cint = delta - mem [(long) v + 3 ] .cint ;
- }
- zmakeradical ( q )
- halfword q ;
- {r_makeradical
- halfword x, y ;
- scaled delta, clr ;
- x = cleanbox ( q + 1 , 2 * ( curstyle / 2 ) + 1 ) ;
- if ( curstyle < 2 )
- clr = fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ] ] .cint
- + ( abs ( fontinfo [ 5 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
- .cint ) / 4 ) ;
- else {
- clr = fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ] ]
- .cint ;
- clr = clr + ( abs ( clr ) / 4 ) ;
- }
- y = vardelimiter ( q + 4 , cursize , mem [(long) x + 3 ] .cint + mem [(long) x + 2 ]
- .cint + clr + fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ]
- ] .cint ) ;
- delta = mem [(long) y + 2 ] .cint - ( mem [(long) x + 3 ] .cint + mem [(long) x + 2 ] .cint +
- clr ) ;
- if ( delta > 0 )
- clr = clr + half ( delta ) ;
- mem [(long) y + 4 ] .cint = - ( mem [(long) x + 3 ] .cint + clr ) ;
- mem [(long) y ] .hh .v.RH = overbar ( x , clr , mem [(long) y + 3 ] .cint ) ;
- mem [(long) q + 1 ] .hh .v.LH = hpack ( y , 0 , 1 ) ;
- mem [(long) q + 1 ] .hh .v.RH = 2 ;
- }
- zmakemathacce ( q )
- halfword q ;
- {/* 30 31 */ r_makemathacce
- halfword p, x, y ;
- integer a ;
- quarterword c ;
- internalfont f ;
- fourquarters i ;
- scaled s ;
- scaled h ;
- scaled delta ;
- scaled w ;
- fetch ( q + 4 ) ;
- if ( ( curi .b0 > 0 ) )
- {
- i = curi ;
- c = curc ;
- f = curf ;
- s = 0 ;
- if ( mem [(long) q + 1 ] .hh .v.RH == 1 )
- {
- fetch ( q + 1 ) ;
- if ( ( ( curi .b2 ) % 4 ) == 1 )
- {
- a = ligkernbase [ curf ] + curi .b3 ;
- do { curi = fontinfo [ a ] .qqqq ;
- if ( curi .b1 == skewchar [ curf ] )
- {
- if ( curi .b2 >= 128 )
- s = fontinfo [ kernbase [ curf ] + curi .b3 ] .cint ;
- goto lab31 ;
- }
- incr ( a ) ;
- } while ( ! ( curi .b0 >= 128 ) ) ;
- }
- }
- lab31: ;
- x = cleanbox ( q + 1 , 2 * ( curstyle / 2 ) + 1 ) ;
- w = mem [(long) x + 1 ] .cint ;
- h = mem [(long) x + 3 ] .cint ;
- while ( true ) {
- if ( ( ( i .b2 ) % 4 ) != 2 )
- goto lab30 ;
- y = i .b3 ;
- i = fontinfo [ charbase [ f ] + y ] .qqqq ;
- if ( fontinfo [ widthbase [ f ] + i .b0 ] .cint > w )
- goto lab30 ;
- c = y ;
- }
- lab30: ;
- if ( h < fontinfo [ 5 + parambase [ f ] ] .cint )
- delta = h ;
- else delta = fontinfo [ 5 + parambase [ f ] ] .cint ;
- if ( ( mem [(long) q + 2 ] .hh .v.RH != 0 ) || ( mem [(long) q + 3 ] .hh .v.RH != 0 )
- )
- if ( mem [(long) q + 1 ] .hh .v.RH == 1 )
- {
- flushnodelis ( x ) ;
- x = newnoad () ;
- mem [(long) x + 1 ] = mem [(long) q + 1 ] ;
- mem [(long) x + 2 ] = mem [(long) q + 2 ] ;
- mem [(long) x + 3 ] = mem [(long) q + 3 ] ;
- mem [(long) q + 2 ] .hh = emptyfield ;
- mem [(long) q + 3 ] .hh = emptyfield ;
- mem [(long) q + 1 ] .hh .v.RH = 3 ;
- mem [(long) q + 1 ] .hh .v.LH = x ;
- x = cleanbox ( q + 1 , curstyle ) ;
- delta = delta + mem [(long) x + 3 ] .cint - h ;
- h = mem [(long) x + 3 ] .cint ;
- }
- y = charbox ( f , c ) ;
- mem [(long) y + 4 ] .cint = s + half ( w - mem [(long) y + 1 ] .cint ) ;
- mem [(long) y + 1 ] .cint = 0 ;
- p = newkern ( - delta ) ;
- mem [(long) p ] .hh .v.RH = x ;
- mem [(long) y ] .hh .v.RH = p ;
- y = vpackage ( y , 0 , 1 , 1073741823 ) ;
- mem [(long) y + 1 ] .cint = mem [(long) x + 1 ] .cint ;
- if ( mem [(long) y + 3 ] .cint < h )
- {
- p = newkern ( h - mem [(long) y + 3 ] .cint ) ;
- mem [(long) p ] .hh .v.RH = mem [(long) y + 5 ] .hh .v.RH ;
- mem [(long) y + 5 ] .hh .v.RH = p ;
- mem [(long) y + 3 ] .cint = h ;
- }
- mem [(long) q + 1 ] .hh .v.LH = y ;
- mem [(long) q + 1 ] .hh .v.RH = 2 ;
- }
- }
- zmakefraction ( q )
- halfword q ;
- {r_makefraction
- halfword p, v, x, y, z ;
- scaled delta, delta1, delta2, shiftup, shiftdown, clr ;
- if ( mem [(long) q + 1 ] .cint == 1073741824 )
- mem [(long) q + 1 ] .cint = fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh
- .v.RH ] ] .cint ;
- x = cleanbox ( q + 2 , curstyle + 2 - 2 * ( curstyle / 6 ) ) ;
- z = cleanbox ( q + 3 , 2 * ( curstyle / 2 ) + 3 - 2 * ( curstyle / 6 ) ) ;
- if ( mem [(long) x + 1 ] .cint < mem [(long) z + 1 ] .cint )
- x = rebox ( x , mem [(long) z + 1 ] .cint ) ;
- else z = rebox ( z , mem [(long) x + 1 ] .cint ) ;
- if ( curstyle < 2 )
- {
- shiftup = fontinfo [ 8 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
- .cint ;
- shiftdown = fontinfo [ 11 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH
- ] ] .cint ;
- }
- else {
- shiftdown = fontinfo [ 12 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH
- ] ] .cint ;
- if ( mem [(long) q + 1 ] .cint != 0 )
- shiftup = fontinfo [ 9 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
- .cint ;
- else shiftup = fontinfo [ 10 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint ;
- }
- if ( mem [(long) q + 1 ] .cint == 0 )
- {
- if ( curstyle < 2 )
- clr = 7 * fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ] ]
- .cint ;
- else clr = 3 * fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh
- .v.RH ] ] .cint ;
- delta = half ( clr - ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( mem [(long) z + 3 ]
- .cint - shiftdown ) ) ) ;
- if ( delta > 0 )
- {
- shiftup = shiftup + delta ;
- shiftdown = shiftdown + delta ;
- }
- }
- else {
- if ( curstyle < 2 )
- clr = 3 * mem [(long) q + 1 ] .cint ;
- else clr = mem [(long) q + 1 ] .cint ;
- delta = half ( mem [(long) q + 1 ] .cint ) ;
- delta1 = clr - ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( fontinfo [ 22 +
- parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ] .cint + delta ) ) ;
- delta2 = clr - ( ( fontinfo [ 22 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint - delta ) - ( mem [(long) z + 3 ] .cint - shiftdown ) ) ;
- if ( delta1 > 0 )
- shiftup = shiftup + delta1 ;
- if ( delta2 > 0 )
- shiftdown = shiftdown + delta2 ;
- }
- v = newnullbox () ;
- mem [(long) v ] .hh.b0 = 1 ;
- mem [(long) v + 3 ] .cint = shiftup + mem [(long) x + 3 ] .cint ;
- mem [(long) v + 2 ] .cint = mem [(long) z + 2 ] .cint + shiftdown ;
- mem [(long) v + 1 ] .cint = mem [(long) x + 1 ] .cint ;
- if ( mem [(long) q + 1 ] .cint == 0 )
- {
- p = newkern ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( mem [(long) z + 3 ] .cint -
- shiftdown ) ) ;
- mem [(long) p ] .hh .v.RH = z ;
- }
- else {
- y = fractionrule ( mem [(long) q + 1 ] .cint ) ;
- p = newkern ( ( fontinfo [ 22 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint - delta ) - ( mem [(long) z + 3 ] .cint - shiftdown ) ) ;
- mem [(long) y ] .hh .v.RH = p ;
- mem [(long) p ] .hh .v.RH = z ;
- p = newkern ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( fontinfo [ 22 +
- parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ] .cint + delta ) ) ;
- mem [(long) p ] .hh .v.RH = y ;
- }
- mem [(long) x ] .hh .v.RH = p ;
- mem [(long) v + 5 ] .hh .v.RH = x ;
- if ( curstyle < 2 )
- delta = fontinfo [ 20 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
- .cint ;
- else delta = fontinfo [ 21 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ]
- ] .cint ;
- x = vardelimiter ( q + 4 , cursize , delta ) ;
- mem [(long) x ] .hh .v.RH = v ;
- z = vardelimiter ( q + 5 , cursize , delta ) ;
- mem [(long) v ] .hh .v.RH = z ;
- mem [(long) q + 1 ] .cint = hpack ( x , 0 , 1 ) ;
- }
- scaled zmakeop ( q )
- halfword q ;
- {register scaled Result; r_makeop
- scaled delta ;
- halfword p, v, x, y, z ;
- scaled shiftup, shiftdown ;
- if ( ( mem [(long) q ] .hh.b1 == 0 ) && ( curstyle < 2 ) )
- mem [(long) q ] .hh.b1 = 1 ;
- if ( mem [(long) q + 1 ] .hh .v.RH == 1 )
- {
- fetch ( q + 1 ) ;
- if ( ( curstyle < 2 ) && ( ( ( curi .b2 ) % 4 ) == 2 ) )
- {
- curc = curi .b3 ;
- mem [(long) q + 1 ] .hh.b1 = curc ;
- curi = fontinfo [ charbase [ curf ] + curc ] .qqqq ;
- }
- delta = fontinfo [ italicbase [ curf ] + ( curi .b2 ) / 4 ] .cint ;
- x = cleanbox ( q + 1 , curstyle ) ;
- if ( ( mem [(long) q + 3 ] .hh .v.RH != 0 ) && ( mem [(long) q ] .hh.b1 != 1 ) )
- mem [(long) x + 1 ] .cint = mem [(long) x + 1 ] .cint - delta ;
- mem [(long) x + 4 ] .cint = half ( mem [(long) x + 3 ] .cint - mem [(long) x + 2 ] .cint ) -
- fontinfo [ 22 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ] .cint ;
- mem [(long) q + 1 ] .hh .v.RH = 2 ;
- mem [(long) q + 1 ] .hh .v.LH = x ;
- }
- else delta = 0 ;
- if ( mem [(long) q ] .hh.b1 == 1 )
- {
- x = cleanbox ( q + 2 , 2 * ( curstyle / 4 ) + 4 + ( curstyle % 2 ) ) ;
- y = cleanbox ( q + 1 , curstyle ) ;
- z = cleanbox ( q + 3 , 2 * ( curstyle / 4 ) + 5 ) ;
- v = newnullbox () ;
- mem [(long) v ] .hh.b0 = 1 ;
- mem [(long) v + 1 ] .cint = mem [(long) y + 1 ] .cint ;
- if ( mem [(long) x + 1 ] .cint > mem [(long) v + 1 ] .cint )
- mem [(long) v + 1 ] .cint = mem [(long) x + 1 ] .cint ;
- if ( mem [(long) z + 1 ] .cint > mem [(long) v + 1 ] .cint )
- mem [(long) v + 1 ] .cint = mem [(long) z + 1 ] .cint ;
- x = rebox ( x , mem [(long) v + 1 ] .cint ) ;
- y = rebox ( y , mem [(long) v + 1 ] .cint ) ;
- z = rebox ( z , mem [(long) v + 1 ] .cint ) ;
- mem [(long) x + 4 ] .cint = half ( delta ) ;
- mem [(long) z + 4 ] .cint = - mem [(long) x + 4 ] .cint ;
- mem [(long) v + 3 ] .cint = mem [(long) y + 3 ] .cint ;
- mem [(long) v + 2 ] .cint = mem [(long) y + 2 ] .cint ;
- if ( mem [(long) q + 2 ] .hh .v.RH == 0 )
- {
- freenode ( x , 7 ) ;
- mem [(long) v + 5 ] .hh .v.RH = y ;
- }
- else {
- shiftup = fontinfo [ 11 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH
- ] ] .cint - mem [(long) x + 2 ] .cint ;
- if ( shiftup < fontinfo [ 9 + parambase [ eqtb [ 4582 + cursize ] .hh
- .v.RH ] ] .cint )
- shiftup = fontinfo [ 9 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ]
- ] .cint ;
- p = newkern ( shiftup ) ;
- mem [(long) p ] .hh .v.RH = y ;
- mem [(long) x ] .hh .v.RH = p ;
- p = newkern ( fontinfo [ 13 + parambase [ eqtb [ 4582 + cursize ] .hh
- .v.RH ] ] .cint ) ;
- mem [(long) p ] .hh .v.RH = x ;
- mem [(long) v + 5 ] .hh .v.RH = p ;
- mem [(long) v + 3 ] .cint = mem [(long) v + 3 ] .cint + fontinfo [ 13 + parambase [
- eqtb [ 4582 + cursize ] .hh .v.RH ] ] .cint + mem [(long) x + 3 ] .cint + mem
- [ x + 2 ] .cint + shiftup ;
- }
- if ( mem [(long) q + 3 ] .hh .v.RH == 0 )
- freenode ( z , 7 ) ;
- else {
- shiftdown = fontinfo [ 12 + parambase [ eqtb [ 4582 + cursize ] .hh
- .v.RH ] ] .cint - mem [(long) z + 3 ] .cint ;
- if ( shiftdown < fontinfo [ 10 + parambase [ eqtb [ 4582 + cursize ] .hh
- .v.RH ] ] .cint )
- shiftdown = fontinfo [ 10 + parambase [ eqtb [ 4582 + cursize ] .hh
- .v.RH ] ] .cint ;
- p = newkern ( shiftdown ) ;
- mem [(long) y ] .hh .v.RH = p ;
- mem [(long) p ] .hh .v.RH = z ;
- p = newkern ( fontinfo [ 13 + parambase [ eqtb [ 4582 + cursize ] .hh
- .v.RH ] ] .cint ) ;
- mem [(long) z ] .hh .v.RH = p ;
- mem [(long) v + 2 ] .cint = mem [(long) v + 2 ] .cint + fontinfo [ 13 + parambase [
- eqtb [ 4582 + cursize ] .hh .v.RH ] ] .cint + mem [(long) z + 3 ] .cint + mem
- [ z + 2 ] .cint + shiftdown ;
- }
- mem [(long) q + 1 ] .cint = v ;
- }
- Result = delta ;
- return(Result) ;
- }
- zmakeord ( q )
- halfword q ;
- {/* 20 10 */ r_makeord
- integer a ;
- halfword p ;
- lab20: if ( ( mem [(long) q + 3 ] .hh .v.RH == 0 ) && ( mem [(long) q + 2 ] .hh .v.RH ==
- 0 ) && ( mem [(long) q + 1 ] .hh .v.RH == 1 ) )
- {
- p = mem [(long) q ] .hh .v.RH ;
- if ( p != 0 )
- if ( ( mem [(long) p ] .hh.b0 >= 16 ) && ( mem [(long) p ] .hh.b0 <= 22 ) )
- if ( mem [(long) p + 1 ] .hh .v.RH == 1 )
- if ( mem [(long) p + 1 ] .hh.b0 == mem [(long) q + 1 ] .hh.b0 )
- {
- mem [(long) q + 1 ] .hh .v.RH = 4 ;
- fetch ( q + 1 ) ;
- if ( ( ( curi .b2 ) % 4 ) == 1 )
- {
- a = ligkernbase [ curf ] + curi .b3 ;
- curc = mem [(long) p + 1 ] .hh.b1 ;
- do { curi = fontinfo [ a ] .qqqq ;
- if ( curi .b1 == curc )
- if ( curi .b2 >= 128 )
- {
- p = newkern ( fontinfo [ kernbase [ curf ] + curi .b3 ] .cint ) ;
- mem [(long) p ] .hh .v.RH = mem [(long) q ] .hh .v.RH ;
- mem [(long) q ] .hh .v.RH = p ;
- return ;
- }
- else {
- mem [(long) q ] .hh .v.RH = mem [(long) p ] .hh .v.RH ;
- mem [(long) q + 1 ] .hh .v.RH = 1 ;
- mem [(long) q + 1 ] .hh.b1 = curi .b3 ;
- mem [(long) q + 3 ] = mem [(long) p + 3 ] ;
- mem [(long) q + 2 ] = mem [(long) p + 2 ] ;
- freenode ( p , 4 ) ;
- goto lab20 ;
- }
- incr ( a ) ;
- } while ( ! ( curi .b0 >= 128 ) ) ;
- }
- }
- }
- }
- zmakescripts ( q , delta )
- halfword q ;
- scaled delta ;
- {r_makescripts
- halfword p, x, y, z ;
- scaled shiftup, shiftdown, clr ;
- smallnumber t ;
- p = mem [(long) q + 1 ] .cint ;
- if ( ( p >= himemmin ) )
- {
- shiftup = 0 ;
- shiftdown = 0 ;
- }
- else {
- z = hpack ( p , 0 , 1 ) ;
- if ( curstyle < 4 )
- t = 16 ;
- else t = 32 ;
- shiftup = mem [(long) z + 3 ] .cint - fontinfo [ 18 + parambase [ eqtb [ 4581 +
- t ] .hh .v.RH ] ] .cint ;
- shiftdown = mem [(long) z + 2 ] .cint + fontinfo [ 19 + parambase [ eqtb [ 4581
- + t ] .hh .v.RH ] ] .cint ;
- freenode ( z , 7 ) ;
- }
- if ( mem [(long) q + 2 ] .hh .v.RH == 0 )
- {
- x = cleanbox ( q + 3 , 2 * ( curstyle / 4 ) + 5 ) ;
- mem [(long) x + 1 ] .cint = mem [(long) x + 1 ] .cint + eqtb [ 5713 ] .cint ;
- if ( shiftdown < fontinfo [ 16 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint )
- shiftdown = fontinfo [ 16 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH
- ] ] .cint ;
- clr = mem [(long) x + 3 ] .cint - ( abs ( fontinfo [ 5 + parambase [ eqtb [ 4581
- + cursize ] .hh .v.RH ] ] .cint * 4 ) / 5 ) ;
- if ( shiftdown < clr )
- shiftdown = clr ;
- mem [(long) x + 4 ] .cint = shiftdown ;
- }
- else {
- {
- x = cleanbox ( q + 2 , 2 * ( curstyle / 4 ) + 4 + ( curstyle % 2 ) ) ;
- mem [(long) x + 1 ] .cint = mem [(long) x + 1 ] .cint + eqtb [ 5713 ] .cint ;
- if ( odd ( curstyle ) )
- clr = fontinfo [ 15 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
- .cint ;
- else if ( curstyle < 2 )
- clr = fontinfo [ 13 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
- .cint ;
- else clr = fontinfo [ 14 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH
- ] ] .cint ;
- if ( shiftup < clr )
- shiftup = clr ;
- clr = mem [(long) x + 2 ] .cint + ( abs ( fontinfo [ 5 + parambase [ eqtb [
- 4581 + cursize ] .hh .v.RH ] ] .cint ) / 4 ) ;
- if ( shiftup < clr )
- shiftup = clr ;
- }
- if ( mem [(long) q + 3 ] .hh .v.RH == 0 )
- mem [(long) x + 4 ] .cint = - shiftup ;
- else {
- y = cleanbox ( q + 3 , 2 * ( curstyle / 4 ) + 5 ) ;
- mem [(long) y + 1 ] .cint = mem [(long) y + 1 ] .cint + eqtb [ 5713 ] .cint ;
- if ( shiftdown < fontinfo [ 17 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint )
- shiftdown = fontinfo [ 17 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint ;
- clr = 4 * fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ]
- ] .cint - ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( mem [(long) y + 3 ] .cint -
- shiftdown ) ) ;
- if ( clr > 0 )
- {
- shiftdown = shiftdown + clr ;
- clr = ( abs ( fontinfo [ 5 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint * 4 ) / 5 ) - ( shiftup - mem [(long) x + 2 ] .cint ) ;
- if ( clr > 0 )
- {
- shiftup = shiftup + clr ;
- shiftdown = shiftdown - clr ;
- }
- }
- mem [(long) x + 4 ] .cint = delta ;
- p = newkern ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( mem [(long) y + 3 ] .cint
- - shiftdown ) ) ;
- mem [(long) x ] .hh .v.RH = p ;
- mem [(long) p ] .hh .v.RH = y ;
- x = vpackage ( x , 0 , 1 , 1073741823 ) ;
- mem [(long) x + 4 ] .cint = shiftdown ;
- }
- }
- if ( mem [(long) q + 1 ] .cint == 0 )
- mem [(long) q + 1 ] .cint = x ;
- else {
- p = mem [(long) q + 1 ] .cint ;
- while ( mem [(long) p ] .hh .v.RH != 0 ) p = mem [(long) p ] .hh .v.RH ;
- mem [(long) p ] .hh .v.RH = x ;
- }
- }
- smallnumber zmakeleftrigh ( q , style , maxd , maxh )
- halfword q ;
- smallnumber style ;
- scaled maxd , maxh ;
- {register smallnumber Result; r_makeleftrigh
- scaled delta, delta1, delta2 ;
- if ( style < 4 )
- cursize = 0 ;
- else cursize = 16 * ( ( style - 2 ) / 2 ) ;
- delta2 = maxd + fontinfo [ 22 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint ;
- delta1 = maxh + maxd - delta2 ;
- if ( delta2 > delta1 )
- delta1 = delta2 ;
- delta = ( delta1 / 500 ) * eqtb [ 5285 ] .cint ;
- delta2 = delta1 + delta1 - eqtb [ 5711 ] .cint ;
- if ( delta < delta2 )
- delta = delta2 ;
- mem [(long) q + 1 ] .cint = vardelimiter ( q + 1 , cursize , delta ) ;
- Result = mem [(long) q ] .hh.b0 - ( 10 ) ;
- return(Result) ;
- }
- mlisttohlist () { /* 21 82 80 81 83 30 */ r_mlisttohlist
- halfword mlist ;
- boolean penalties ;
- smallnumber style ;
- smallnumber savestyle ;
- halfword q ;
- halfword r ;
- smallnumber rtype ;
- smallnumber t ;
- halfword p, x, y, z ;
- integer pen ;
- smallnumber s ;
- scaled maxh, maxd ;
- scaled delta ;
- mlist = curmlist ;
- penalties = mlistpenalti ;
- style = curstyle ;
- q = mlist ;
- r = 0 ;
- rtype = 17 ;
- maxh = 0 ;
- maxd = 0 ;
- {
- if ( curstyle < 4 )
- cursize = 0 ;
- else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
- curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint , 18 ) ;
- }
- while ( q != 0 ) {
- lab21: delta = 0 ;
- switch ( mem [(long) q ] .hh.b0 )
- {case 18 :
- switch ( rtype )
- {case 18 :
- case 17 :
- case 19 :
- case 20 :
- case 22 :
- case 30 :
- {
- mem [(long) q ] .hh.b0 = 16 ;
- goto lab21 ;
- }
- break ;
- default :
-
- break ;
- }
- break ;
- case 19 :
- case 21 :
- case 22 :
- case 31 :
- {
- if ( rtype == 18 )
- mem [(long) r ] .hh.b0 = 16 ;
- if ( mem [(long) q ] .hh.b0 == 31 )
- goto lab80 ;
- }
- break ;
- case 30 :
- goto lab80 ;
- break ;
- case 25 :
- {
- makefraction ( q ) ;
- goto lab82 ;
- }
- break ;
- case 17 :
- {
- delta = makeop ( q ) ;
- if ( mem [(long) q ] .hh.b1 == 1 )
- goto lab82 ;
- }
- break ;
- case 16 :
- makeord ( q ) ;
- break ;
- case 20 :
- case 23 :
- ;
- break ;
- case 24 :
- makeradical ( q ) ;
- break ;
- case 27 :
- makeover ( q ) ;
- break ;
- case 26 :
- makeunder ( q ) ;
- break ;
- case 28 :
- makemathacce ( q ) ;
- break ;
- case 29 :
- makevcenter ( q ) ;
- break ;
- case 14 :
- {
- curstyle = mem [(long) q ] .hh.b1 ;
- {
- if ( curstyle < 4 )
- cursize = 0 ;
- else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
- curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ]
- .hh .v.RH ] ] .cint , 18 ) ;
- }
- goto lab81 ;
- }
- break ;
- case 15 :
- {
- switch ( curstyle / 2 )
- {case 0 :
- {
- p = mem [(long) q + 1 ] .hh .v.LH ;
- mem [(long) q + 1 ] .hh .v.LH = 0 ;
- }
- break ;
- case 1 :
- {
- p = mem [(long) q + 1 ] .hh .v.RH ;
- mem [(long) q + 1 ] .hh .v.RH = 0 ;
- }
- break ;
- case 2 :
- {
- p = mem [(long) q + 2 ] .hh .v.LH ;
- mem [(long) q + 2 ] .hh .v.LH = 0 ;
- }
- break ;
- case 3 :
- {
- p = mem [(long) q + 2 ] .hh .v.RH ;
- mem [(long) q + 2 ] .hh .v.RH = 0 ;
- }
- break ;
- }
- flushnodelis ( mem [(long) q + 1 ] .hh .v.LH ) ;
- flushnodelis ( mem [(long) q + 1 ] .hh .v.RH ) ;
- flushnodelis ( mem [(long) q + 2 ] .hh .v.LH ) ;
- flushnodelis ( mem [(long) q + 2 ] .hh .v.RH ) ;
- mem [(long) q ] .hh.b0 = 14 ;
- mem [(long) q ] .hh.b1 = curstyle ;
- mem [(long) q + 1 ] .cint = 0 ;
- mem [(long) q + 2 ] .cint = 0 ;
- if ( p != 0 )
- {
- z = mem [(long) q ] .hh .v.RH ;
- mem [(long) q ] .hh .v.RH = p ;
- while ( mem [(long) p ] .hh .v.RH != 0 ) p = mem [(long) p ] .hh .v.RH ;
- mem [(long) p ] .hh .v.RH = z ;
- }
- goto lab81 ;
- }
- break ;
- case 3 :
- case 4 :
- case 5 :
- case 8 :
- case 12 :
- case 7 :
- goto lab81 ;
- break ;
- case 2 :
- {
- if ( mem [(long) q + 3 ] .cint > maxh )
- maxh = mem [(long) q + 3 ] .cint ;
- if ( mem [(long) q + 2 ] .cint > maxd )
- maxd = mem [(long) q + 2 ] .cint ;
- goto lab81 ;
- }
- break ;
- case 10 :
- {
- if ( mem [(long) q ] .hh.b1 == 99 )
- {
- x = mem [(long) q + 1 ] .hh .v.LH ;
- y = mathglue ( x , curmu ) ;
- deletegluere ( x ) ;
- mem [(long) q + 1 ] .hh .v.LH = y ;
- mem [(long) q ] .hh.b1 = 0 ;
- }
- else if ( ( cursize != 0 ) && ( mem [(long) q ] .hh.b1 == 98 ) )
- {
- p = mem [(long) q ] .hh .v.RH ;
- if ( p != 0 )
- if ( ( mem [(long) p ] .hh.b0 == 10 ) || ( mem [(long) p ] .hh.b0 == 11 ) )
- {
- mem [(long) q ] .hh .v.RH = mem [(long) p ] .hh .v.RH ;
- mem [(long) p ] .hh .v.RH = 0 ;
- flushnodelis ( p ) ;
- }
- }
- goto lab81 ;
- }
- break ;
- case 11 :
- {
- mathkern ( q , curmu ) ;
- goto lab81 ;
- }
- break ;
- default :
- confusion ( 742 ) ;
- break ;
- }
- switch ( mem [(long) q + 1 ] .hh .v.RH )
- {case 1 :
- case 4 :
- {
- fetch ( q + 1 ) ;
- if ( ( curi .b0 > 0 ) )
- {
- delta = fontinfo [ italicbase [ curf ] + ( curi .b2 ) / 4 ] .cint ;
- p = newcharacter ( curf , curc ) ;
- if ( ( mem [(long) q + 1 ] .hh .v.RH == 4 ) && ( fontinfo [ 2 + parambase
- [ curf ] ] .cint != 0 ) )
- delta = 0 ;
- if ( ( mem [(long) q + 3 ] .hh .v.RH == 0 ) && ( delta != 0 ) )
- {
- mem [(long) p ] .hh .v.RH = newkern ( delta ) ;
- delta = 0 ;
- }
- }
- else p = 0 ;
- }
- break ;
- case 0 :
- p = 0 ;
- break ;
- case 2 :
- p = mem [(long) q + 1 ] .hh .v.LH ;
- break ;
- case 3 :
- {
- curmlist = mem [(long) q + 1 ] .hh .v.LH ;
- savestyle = curstyle ;
- mlistpenalti = false ;
- mlisttohlist () ;
- curstyle = savestyle ;
- {
- if ( curstyle < 4 )
- cursize = 0 ;
- else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
- curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ]
- .hh .v.RH ] ] .cint , 18 ) ;
- }
- p = hpack ( mem [(long) memtop - 3 ] .hh .v.RH , 0 , 1 ) ;
- }
- break ;
- default :
- confusion ( 743 ) ;
- break ;
- }
- mem [(long) q + 1 ] .cint = p ;
- if ( ( mem [(long) q + 3 ] .hh .v.RH == 0 ) && ( mem [(long) q + 2 ] .hh .v.RH == 0 )
- )
- goto lab82 ;
- makescripts ( q , delta ) ;
- lab82: z = hpack ( mem [(long) q + 1 ] .cint , 0 , 1 ) ;
- if ( mem [(long) z + 3 ] .cint > maxh )
- maxh = mem [(long) z + 3 ] .cint ;
- if ( mem [(long) z + 2 ] .cint > maxd )
- maxd = mem [(long) z + 2 ] .cint ;
- freenode ( z , 7 ) ;
- lab80: r = q ;
- rtype = mem [(long) r ] .hh.b0 ;
- lab81: q = mem [(long) q ] .hh .v.RH ;
- }
- if ( rtype == 18 )
- mem [(long) r ] .hh.b0 = 16 ;
- p = memtop - 3 ;
- mem [(long) p ] .hh .v.RH = 0 ;
- q = mlist ;
- rtype = 0 ;
- curstyle = style ;
- {
- if ( curstyle < 4 )
- cursize = 0 ;
- else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
- curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ] .hh
- .v.RH ] ] .cint , 18 ) ;
- }
- while ( q != 0 ) {
- t = 16 ;
- s = 4 ;
- pen = 10000 ;
- switch ( mem [(long) q ] .hh.b0 )
- {case 17 :
- case 20 :
- case 21 :
- case 22 :
- case 23 :
- t = mem [(long) q ] .hh.b0 ;
- break ;
- case 18 :
- {
- t = 18 ;
- pen = eqtb [ 5276 ] .cint ;
- }
- break ;
- case 19 :
- {
- t = 19 ;
- pen = eqtb [ 5277 ] .cint ;
- }
- break ;
- case 16 :
- case 29 :
- case 27 :
- case 26 :
- ;
- break ;
- case 24 :
- s = 5 ;
- break ;
- case 28 :
- s = 5 ;
- break ;
- case 25 :
- {
- t = 23 ;
- s = 6 ;
- }
- break ;
- case 30 :
- case 31 :
- t = makeleftrigh ( q , style , maxd , maxh ) ;
- break ;
- case 14 :
- {
- curstyle = mem [(long) q ] .hh.b1 ;
- s = 3 ;
- {
- if ( curstyle < 4 )
- cursize = 0 ;
- else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
- curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ]
- .hh .v.RH ] ] .cint , 18 ) ;
- }
- goto lab83 ;
- }
- break ;
- case 8 :
- case 12 :
- case 2 :
- case 7 :
- case 5 :
- case 3 :
- case 4 :
- case 10 :
- case 11 :
- {
- mem [(long) p ] .hh .v.RH = q ;
- p = q ;
- q = mem [(long) q ] .hh .v.RH ;
- mem [(long) p ] .hh .v.RH = 0 ;
- goto lab30 ;
- }
- break ;
- default :
- confusion ( 744 ) ;
- break ;
- }
- if ( rtype > 0 )
- {
- switch ( strpool [ rtype * 8 + t + magicoffset ] )
- {case 48 :
- x = 0 ;
- break ;
- case 49 :
- if ( curstyle < 4 )
- x = 15 ;
- else x = 0 ;
- break ;
- case 50 :
- x = 15 ;
- break ;
- case 51 :
- if ( curstyle < 4 )
- x = 16 ;
- else x = 0 ;
- break ;
- case 52 :
- if ( curstyle < 4 )
- x = 17 ;
- else x = 0 ;
- break ;
- default :
- confusion ( 746 ) ;
- break ;
- }
- if ( x != 0 )
- {
- y = mathglue ( eqtb [ 3526 + x ] .hh .v.RH , curmu ) ;
- z = newglue ( y ) ;
- mem [(long) y ] .hh .v.RH = 0 ;
- mem [(long) p ] .hh .v.RH = z ;
- p = z ;
- mem [(long) z ] .hh.b1 = x + 1 ;
- }
- }
- if ( mem [(long) q + 1 ] .cint != 0 )
- {
- mem [(long) p ] .hh .v.RH = mem [(long) q + 1 ] .cint ;
- do { p = mem [(long) p ] .hh .v.RH ;
- } while ( ! ( mem [(long) p ] .hh .v.RH == 0 ) ) ;
- }
- if ( penalties )
- if ( mem [(long) q ] .hh .v.RH != 0 )
- if ( pen < 10000 )
- {
- rtype = mem [(long) mem [(long) q ] .hh .v.RH ] .hh.b0 ;
- if ( rtype != 12 )
- if ( rtype != 19 )
- {
- z = newpenalty ( pen ) ;
- mem [(long) p ] .hh .v.RH = z ;
- p = z ;
- }
- }
- rtype = t ;
- lab83: r = q ;
- q = mem [(long) q ] .hh .v.RH ;
- freenode ( r , s ) ;
- lab30: ;
- }
- }
- pushalignmen () { r_pushalignmen
- halfword p ;
- p = getnode ( 5 ) ;
- mem [(long) p ] .hh .v.RH = alignptr ;
- mem [(long) p ] .hh .v.LH = curalign ;
- mem [(long) p + 1 ] .hh .v.LH = mem [(long) memtop - 8 ] .hh .v.RH ;
- mem [(long) p + 1 ] .hh .v.RH = curspan ;
- mem [(long) p + 2 ] .cint = curloop ;
- mem [(long) p + 3 ] .cint = alignstate ;
- mem [(long) p + 4 ] .hh .v.LH = curhead ;
- mem [(long) p + 4 ] .hh .v.RH = curtail ;
- alignptr = p ;
- curhead = getavail () ;
- }
- popalignment () { r_popalignment
- halfword p ;
- {
- mem [(long) curhead ] .hh .v.RH = avail ;
- avail = curhead ;
-
- #ifdef STAT
- decr ( dynused ) ;
- #endif /* STAT */
- }
- p = alignptr ;
- curtail = mem [(long) p + 4 ] .hh .v.RH ;
- curhead = mem [(long) p + 4 ] .hh .v.LH ;
- alignstate = mem [(long) p + 3 ] .cint ;
- curloop = mem [(long) p + 2 ] .cint ;
- curspan = mem [(long) p + 1 ] .hh .v.RH ;
- mem [(long) memtop - 8 ] .hh .v.RH = mem [(long) p + 1 ] .hh .v.LH ;
- curalign = mem [(long) p ] .hh .v.LH ;
- alignptr = mem [(long) p ] .hh .v.RH ;
- freenode ( p , 5 ) ;
- }
- getpreamblet () { /* 20 */ r_getpreamblet
- lab20: gettoken () ;
- while ( ( curchr == 128 ) && ( curcmd == 4 ) ) {
- gettoken () ;
- if ( curcmd > 99 )
- {
- expand () ;
- gettoken () ;
- }
- }
- if ( ( curcmd == 74 ) && ( curchr == 3537 ) )
- {
- scanoptional () ;
- scanglue ( 2 ) ;
- if ( eqtb [ 5310 ] .cint > 0 )
- geqdefine ( 3537 , 116 , curval ) ;
- else eqdefine ( 3537 , 116 , curval ) ;
- goto lab20 ;
- }
- }
- initalign () { /* 30 31 32 22 */ r_initalign
- halfword savecsptr ;
- halfword p ;
- savecsptr = curcs ;
- pushalignmen () ;
- alignstate = - 1000000 ;
- if ( ( curlist .modefield == 201 ) && ( ( curlist .tailfield != curlist
- .headfield ) || ( curlist .auxfield != 0 ) ) )
- {
- {
- if ( interaction == 3 )
- wakeuptermin () ;
- printnl ( 133 ) ;
- print ( 536 ) ;
- }
- printesc ( 379 ) ;
- print ( 747 ) ;
- {
- helpptr = 3 ;
- helpline [ 2 ] = 748 ;
- helpline [ 1 ] = 749 ;
- helpline [ 0 ] = 750 ;
- }
- error () ;
- flushmath () ;
- }
- pushnest () ;
- if ( curlist .modefield == 201 )
- {
- curlist .modefield = - 1 ;
- curlist .auxfield = nest [ nestptr - 2 ] .auxfield ;
- }
- else if ( curlist .modefield > 0 )
- curlist .modefield = - curlist .modefield ;
- scanspec () ;
- newsavelevel ( 6 ) ;
- mem [(long) memtop - 8 ] .hh .v.RH = 0 ;
- curalign = memtop - 8 ;
- curloop = 0 ;
- scannerstatu = 4 ;
- warningindex = savecsptr ;
- alignstate = - 1000000 ;
- while ( true ) {
- mem [(long) curalign ] .hh .v.RH = newparamglue ( 11 ) ;
- curalign = mem [(long) curalign ] .hh .v.RH ;
- if ( curcmd == 5 )
- goto lab30 ;
- p = memtop - 4 ;
- mem [(long) p ] .hh .v.RH = 0 ;
- while ( true ) {
- getpreamblet () ;
- if ( curcmd == 6 )
- goto lab31 ;
- if ( ( curcmd <= 5 ) && ( curcmd >= 4 ) && ( alignstate == - 1000000 ) )
- if ( ( p == memtop - 4 ) && ( curloop == 0 ) && ( curcmd == 4 ) )
- curloop = curalign ;
- else {
- {
- if ( interaction == 3 )
- wakeuptermin () ;
- printnl ( 133 ) ;
- print ( 756 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 757 ;
- helpline [ 1 ] = 758 ;
- helpline [ 0 ] = 759 ;
- }
- backerror () ;
- goto lab31 ;
- }
- else if ( ( curcmd != 10 ) || ( p != memtop - 4 ) )
- {
- mem [(long) p ] .hh .v.RH = getavail () ;
- p = mem [(long) p ] .hh .v.RH ;
- mem [(long) p ] .hh .v.LH = curtok ;
- }
- }
- lab31: ;
- mem [(long) curalign ] .hh .v.RH = newnullbox () ;
- curalign = mem [(long) curalign ] .hh .v.RH ;
- mem [(long) curalign ] .hh .v.LH = memtop - 9 ;
- mem [(long) curalign + 1 ] .cint = - 1073741824 ;
- mem [(long) curalign + 3 ] .cint = mem [(long) memtop - 4 ] .hh .v.RH ;
- p = memtop - 4 ;
- mem [(long) p ] .hh .v.RH = 0 ;
- while ( true ) {
- lab22: getpreamblet () ;
- if ( ( curcmd <= 5 ) && ( curcmd >= 4 ) && ( alignstate == - 1000000 ) )
- goto lab32 ;
- if ( curcmd == 6 )
- {
- {
- if ( interaction == 3 )
- wakeuptermin () ;
- printnl ( 133 ) ;
- print ( 760 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 757 ;
- helpline [ 1 ] = 758 ;
- helpline [ 0 ] = 761 ;
- }
- error () ;
- goto lab22 ;
- }
- mem [(long) p ] .hh .v.RH = getavail () ;
- p = mem [(long) p ] .hh .v.RH ;
- mem [(long) p ] .hh .v.LH = curtok ;
- }
- lab32: mem [(long) p ] .hh .v.RH = getavail () ;
- p = mem [(long) p ] .hh .v.RH ;
- mem [(long) p ] .hh .v.LH = 7359 ;
- mem [(long) curalign + 2 ] .cint = mem [(long) memtop - 4 ] .hh .v.RH ;
- }
- lab30: scannerstatu = 0 ;
- newsavelevel ( 6 ) ;
- if ( eqtb [ 4064 ] .hh .v.RH != 0 )
- begintokenli ( eqtb [ 4064 ] .hh .v.RH , 13 ) ;
- alignpeek () ;
- }
- zinitspan ( p )
- halfword p ;
- {r_initspan
- pushnest () ;
- if ( curlist .modefield == - 101 )
- curlist .auxfield = 1000 ;
- else {
- curlist .auxfield = - 65536000 ;
- normalparagr () ;
- }
- curspan = p ;
- }
- initrow () { r_initrow
- pushnest () ;
- curlist .modefield = ( - 102 ) - curlist .modefield ;
- curlist .auxfield = 0 ;
- {
- mem [(long) curlist .tailfield ] .hh .v.RH = newglue ( mem [(long) mem [(long) memtop - 8 ]
- .hh .v.RH + 1 ] .hh .v.LH ) ;
- curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
- }
- mem [(long) curlist .tailfield ] .hh.b1 = 12 ;
- curalign = mem [(long) mem [(long) memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
- curtail = curhead ;
- initspan ( curalign ) ;
- }
- initcol () { r_initcol
- mem [(long) curalign + 5 ] .hh .v.LH = curcmd ;
- if ( curcmd == 63 )
- alignstate = 0 ;
- else {
- backinput () ;
- begintokenli ( mem [(long) curalign + 3 ] .cint , 1 ) ;
- }
- }
- boolean fincol () { /* 10 */ register boolean Result; r_fincol
- halfword p ;
- halfword q, r ;
- halfword s ;
- halfword u ;
- scaled w ;
- glueord o ;
- halfword n ;
- q = mem [(long) curalign ] .hh .v.RH ;
- if ( ( curalign == 0 ) || ( q == 0 ) )
- confusion ( 763 ) ;
- p = mem [(long) q ] .hh .v.RH ;
- if ( ( p == 0 ) && ( mem [(long) curalign + 5 ] .hh .v.LH < 129 ) )
- if ( curloop != 0 )
- {
- mem [(long) q ] .hh .v.RH = newnullbox () ;
- p = mem [(long) q ] .hh .v.RH ;
- mem [(long) p ] .hh .v.LH = memtop - 9 ;
- mem [(long) p + 1 ] .cint = - 1073741824 ;
- curloop = mem [(long) curloop ] .hh .v.RH ;
- q = memtop - 4 ;
- r = mem [(long) curloop + 3 ] .cint ;
- while ( r != 0 ) {
- mem [(long) q ] .hh .v.RH = getavail () ;
- q = mem [(long) q ] .hh .v.RH ;
- mem [(long) q ] .hh .v.LH = mem [(long) r ] .hh .v.LH ;
- r = mem [(long) r ] .hh .v.RH ;
- }
- mem [(long) q ] .hh .v.RH = 0 ;
- mem [(long) p + 3 ] .cint = mem [(long) memtop - 4 ] .hh .v.RH ;
- q = memtop - 4 ;
- r = mem [(long) curloop + 2 ] .cint ;
- while ( r != 0 ) {
- mem [(long) q ] .hh .v.RH = getavail () ;
- q = mem [(long) q ] .hh .v.RH ;
- mem [(long) q ] .hh .v.LH = mem [(long) r ] .hh .v.LH ;
- r = mem [(long) r ] .hh .v.RH ;
- }
- mem [(long) q ] .hh .v.RH = 0 ;
- mem [(long) p + 2 ] .cint = mem [(long) memtop - 4 ] .hh .v.RH ;
- curloop = mem [(long) curloop ] .hh .v.RH ;
- mem [(long) p ] .hh .v.RH = newglue ( mem [(long) curloop + 1 ] .hh .v.LH ) ;
- }
- else {
- {
- if ( interaction == 3 )
- wakeuptermin () ;
- printnl ( 133 ) ;
- print ( 764 ) ;
- }
- printesc ( 752 ) ;
- {
- helpptr = 3 ;
- helpline [ 2 ] = 765 ;
- helpline [ 1 ] = 766 ;
- helpline [ 0 ] = 767 ;
- }
- mem [(long) curalign + 5 ] .hh .v.LH = 129 ;
- error () ;
- }
- if ( mem [(long) curalign + 5 ] .hh .v.LH != 128 )
- {
- unsave () ;
- newsavelevel ( 6 ) ;
- {
- if ( curlist .modefield == - 101 )
- {
- adjusttail = curtail ;
- u = hpack ( mem [(long) curlist .headfield ] .hh .v.RH , 0 , 1 ) ;
- w = mem [(long) u + 1 ] .cint ;
- curtail = adjusttail ;
- adjusttail = 0 ;
- }
- else {
- u = vpackage ( mem [(long) curlist .headfield ] .hh .v.RH , 0 , 1 , 0 ) ;
- w = mem [(long) u + 3 ] .cint ;
- }
- n = 0 ;
- if ( curspan != curalign )
- {
- q = curspan ;
- do { incr ( n ) ;
- q = mem [(long) mem [(long) q ] .hh .v.RH ] .hh .v.RH ;
- } while ( ! ( q == curalign ) ) ;
- if ( n > 255 )
- confusion ( 768 ) ;
- q = curspan ;
- while ( mem [(long) mem [(long) q ] .hh .v.LH ] .hh .v.RH < n ) q = mem [(long) q ] .hh
- .v.LH ;
- if ( mem [(long) mem [(long) q ] .hh .v.LH ] .hh .v.RH > n )
- {
- s = getnode ( 2 ) ;
- mem [(long) s ] .hh .v.LH = mem [(long) q ] .hh .v.LH ;
- mem [(long) s ] .hh .v.RH = n ;
- mem [(long) q ] .hh .v.LH = s ;
- mem [(long) s + 1 ] .cint = w ;
- }
- else if ( mem [(long) mem [(long) q ] .hh .v.LH + 1 ] .cint < w )
- mem [(long) mem [(long) q ] .hh .v.LH + 1 ] .cint = w ;
- }
- else if ( w > mem [(long) curalign + 1 ] .cint )
- mem [(long) curalign + 1 ] .cint = w ;
- mem [(long) u ] .hh.b0 = 13 ;
- mem [(long) u ] .hh.b1 = n ;
- if ( totalstretch [ 3 ] != 0 )
- o = 3 ;
- else if ( totalstretch [ 2 ] != 0 )
- o = 2 ;
- else if ( totalstretch [ 1 ] != 0 )
- o = 1 ;
- else o = 0 ;
- mem [(long) u + 5 ] .hh.b1 = o ;
- mem [(long) u + 6 ] .cint = totalstretch [ o ] ;
- if ( totalshrink [ 3 ] != 0 )
- o = 3 ;
- else if ( totalshrink [ 2 ] != 0 )
- o = 2 ;
- else if ( totalshrink [ 1 ] != 0 )
- o = 1 ;
- else o = 0 ;
- mem [(long) u + 5 ] .hh.b0 = o ;
- mem [(long) u + 4 ] .cint = totalshrink [ o ] ;
- popnest () ;
- mem [(long) curlist .tailfield ] .hh .v.RH = u ;
- curlist .tailfield = u ;
- }
- {
- mem [(long) curlist .tailfield ] .hh .v.RH = newglue ( mem [(long) mem [(long) curalign ]
- .hh .v.RH + 1 ] .hh .v.LH ) ;
- curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
- }
- mem [(long) curlist .tailfield ] .hh.b1 = 12 ;
- if ( mem [(long) curalign + 5 ] .hh .v.LH >= 129 )
- {
- Result = true ;
- return(Result) ;
- }
- initspan ( p ) ;
- }
- alignstate = 1000000 ;
- do { getxtoken () ;
- } while ( ! ( curcmd != 10 ) ) ;
- curalign = p ;
- initcol () ;
- Result = false ;
- return(Result) ;
- }
- finrow () { r_finrow
- halfword p ;
- if ( curlist .modefield == - 101 )
- {
- p = hpack ( mem [(long) curlist .headfield ] .hh .v.RH , 0 , 1 ) ;
- popnest () ;
- appendtovlis ( p ) ;
- if ( curhead != curtail )
- {
- mem [(long) curlist .tailfield ] .hh .v.RH = mem [(long) curhead ] .hh .v.RH ;
- curlist .tailfield = curtail ;
- }
- }
- else {
- p = vpackage ( mem [(long) curlist .headfield ] .hh .v.RH , 0 , 1 , 1073741823 )
- ;
- popnest () ;
- mem [(long) curlist .tailfield ] .hh .v.RH = p ;
- curlist .tailfield = p ;
- curlist .auxfield = 1000 ;
- }
- mem [(long) p ] .hh.b0 = 13 ;
- mem [(long) p + 6 ] .cint = 0 ;
- if ( eqtb [ 4064 ] .hh .v.RH != 0 )
- begintokenli ( eqtb [ 4064 ] .hh .v.RH , 13 ) ;
- alignpeek () ;
- }
- finalign () { r_finalign
- halfword p, q, r, s, u, v ;
- scaled t, w ;
- scaled o ;
- halfword n ;
- scaled rulesave ;
- if ( curgroup != 6 )
- confusion ( 769 ) ;
- unsave () ;
- if ( curgroup != 6 )
- confusion ( 770 ) ;
- unsave () ;
- if ( nest [ nestptr - 1 ] .modefield == 201 )
- o = eqtb [ 5716 ] .cint ;
- else o = 0 ;
- q = mem [(long) mem [(long) memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
- do { flushlist ( mem [(long) q + 3 ] .cint ) ;
- flushlist ( mem [(long) q + 2 ] .cint ) ;
- p = mem [(long) mem [(long) q ] .hh .v.RH ] .hh .v.RH ;
- if ( mem [(long) q + 1 ] .cint == - 1073741824 )
- {
- mem [(long) q + 1 ] .cint = 0 ;
- r = mem [(long) q ] .hh .v.RH ;
- s = mem [(long) r + 1 ] .hh .v.LH ;
- if ( s != 0 )
- {
- incr ( mem [(long) 0 ] .hh .v.RH ) ;
- deletegluere ( s ) ;
- mem [(long) r + 1 ] .hh .v.LH = 0 ;
- }
- }
- if ( mem [(long) q ] .hh .v.LH != memtop - 9 )
- {
- t = mem [(long) q + 1 ] .cint + mem [(long) mem [(long) mem [(long) q ] .hh .v.RH + 1 ] .hh
- .v.LH + 1 ] .cint ;
- r = mem [(long) q ] .hh .v.LH ;
- s = memtop - 9 ;
- mem [(long) s ] .hh .v.LH = p ;
- n = 1 ;
- do { mem [(long) r + 1 ] .cint = mem [(long) r + 1 ] .cint - t ;
- u = mem [(long) r ] .hh .v.LH ;
- while ( mem [(long) r ] .hh .v.RH > n ) {
- s = mem [(long) s ] .hh .v.LH ;
- n = mem [(long) mem [(long) s ] .hh .v.LH ] .hh .v.RH + 1 ;
- }
- if ( mem [(long) r ] .hh .v.RH < n )
- {
- mem [(long) r ] .hh .v.LH = mem [(long) s ] .hh .v.LH ;
- mem [(long) s ] .hh .v.LH = r ;
- decr ( mem [(long) r ] .hh .v.RH ) ;
- s = r ;
- }
- else {
- if ( mem [(long) r + 1 ] .cint > mem [(long) mem [(long) s ] .hh .v.LH + 1 ] .cint )
- mem [(long) mem [(long) s ] .hh .v.LH + 1 ] .cint = mem [(long) r + 1 ] .cint ;
- freenode ( r , 2 ) ;
- }
- r = u ;
- } while ( ! ( r == memtop - 9 ) ) ;
- }
- mem [(long) q ] .hh.b0 = 13 ;
- mem [(long) q ] .hh.b1 = 0 ;
- mem [(long) q + 3 ] .cint = 0 ;
- mem [(long) q + 2 ] .cint = 0 ;
- mem [(long) q + 5 ] .hh.b1 = 0 ;
- mem [(long) q + 5 ] .hh.b0 = 0 ;
- mem [(long) q + 6 ] .cint = 0 ;
- mem [(long) q + 4 ] .cint = 0 ;
- q = p ;
- } while ( ! ( q == 0 ) ) ;
- saveptr = saveptr - 2 ;
- packbeginlin = - curlist .mlfield ;
- if ( curlist .modefield == - 1 )
- {
- rulesave = eqtb [ 5717 ] .cint ;
- eqtb [ 5717 ] .cint = 0 ;
- p = hpack ( mem [(long) memtop - 8 ] .hh .v.RH , savestack [ saveptr + 1 ] .cint
- , savestack [ saveptr + 0 ] .cint ) ;
- eqtb [ 5717 ] .cint = rulesave ;
- }
- else {
- q = mem [(long) mem [(long) memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
- do { mem [(long) q + 3 ] .cint = mem [(long) q + 1 ] .cint ;
- mem [(long) q + 1 ] .cint = 0 ;
- q = mem [(long) mem [(long) q ] .hh .v.RH ] .hh .v.RH ;
- } while ( ! ( q == 0 ) ) ;
- p = vpackage ( mem [(long) memtop - 8 ] .hh .v.RH , savestack [ saveptr + 1 ]
- .cint , savestack [ saveptr + 0 ] .cint , 1073741823 ) ;
- q = mem [(long) mem [(long) memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
- do { mem [(long) q + 1 ] .cint = mem [(long) q + 3 ] .cint ;
- mem [(long) q + 3 ] .cint = 0 ;
- q = mem [(long) mem [(long) q ] .hh .v.RH ] .hh .v.RH ;
- } while ( ! ( q == 0 ) ) ;
- }
- packbeginlin = 0 ;
- q = mem [(long) curlist .headfield ] .hh .v.RH ;
- s = curlist .headfield ;
- while ( q != 0 ) {
- if ( mem [(long) q ] .hh.b0 == 13 )
- {
- if ( curlist .modefield == - 1 )
- {
- mem [(long) q ] .hh.b0 = 0 ;
- mem [(long) q + 1 ] .cint = mem [(long) p + 1 ] .cint ;
- }
- else {
- mem [(long) q ] .hh.b0 = 1 ;
- mem [(long) q + 3 ] .cint = mem [(long) p + 3 ] .cint ;
- }
- mem [(long) q + 5 ] .hh.b1 = mem [(long) p + 5 ] .hh.b1 ;
- mem [(long) q + 5 ] .hh.b0 = mem [(long) p + 5 ] .hh.b0 ;
- mem [(long) q + 6 ] .gr = mem [(long) p + 6 ] .gr ;
- mem [(long) q + 4 ] .cint = o ;
- r = mem [(long) mem [(long) q + 5 ] .hh .v.RH ] .hh .v.RH ;
- s = mem [(long) mem [(long) p + 5 ] .hh .v.RH ] .hh .v.RH ;
- do { n = mem [(long) r ] .hh.b1 ;
- t = mem [(long) s + 1 ] .cint ;
- w = t ;
- u = memtop - 4 ;
- while ( n > 0 ) {
- decr ( n ) ;
- s = mem [(long) s ] .hh .v.RH ;
- v = mem [(long) s + 1 ] .hh .v.LH ;
- mem [(long) u ] .hh .v.RH = newglue ( v ) ;
- u = mem [(long) u ] .hh .v.RH ;
- mem [(long) u ] .hh.b1 = 12 ;
- t = t + mem [(long) v + 1 ] .cint ;
- if ( mem [(long) p + 5 ] .hh.b0 == 1 )
- {
- if ( mem [(long) v ] .hh.b0 == mem [(long) p + 5 ] .hh.b1 )
- t = t + round ( mem [(long) p + 6 ] .gr * mem [(long) v + 2 ] .cint ) ;
- }
- else if ( mem [(long) p + 5 ] .hh.b0 == 2 )
- {
- if ( mem [(long) v ] .hh.b1 == mem [(long) p + 5 ] .hh.b1 )
- t = t - round ( mem [(long) p + 6 ] .gr * mem [(long) v + 3 ] .cint ) ;
- }
- s = mem [(long) s ] .hh .v.RH ;
- mem [(long) u ] .hh .v.RH = newnullbox () ;
- u = mem [(long) u ] .hh .v.RH ;
- t = t + mem [(long) s + 1 ] .cint ;
- if ( curlist .modefield == - 1 )
- mem [(long) u + 1 ] .cint = mem [(long) s + 1 ] .cint ;
- else {
- mem [(long) u ] .hh.b0 = 1 ;
- mem [(long) u + 3 ] .cint = mem [(long) s + 1 ] .cint ;
- }
- }
- if ( curlist .modefield == - 1 )
- {
- mem [(long) r + 3 ] .cint = mem [(long) q + 3 ] .cint ;
- mem [(long) r + 2 ] .cint = mem [(long) q + 2 ] .cint ;
- if ( t == mem [(long) r + 1 ] .cint )
- {
- mem [(long) r + 5 ] .hh.b0 = 0 ;
- mem [(long) r + 5 ] .hh.b1 = 0 ;
- mem [(long) r + 6 ] .gr = 0.0 ;
- }
- else if ( t > mem [(long) r + 1 ] .cint )
- {
- mem [(long) r + 5 ] .hh.b0 = 1 ;
- if ( mem [(long) r + 6 ] .cint == 0 )
- mem [(long) r + 6 ] .gr = 0.0 ;
- else mem [(long) r + 6 ] .gr = ( t - mem [(long) r + 1 ] .cint ) / ((double)
- mem [(long) r + 6 ] .cint ) ;
- }
- else {
- mem [(long) r + 5 ] .hh.b1 = mem [(long) r + 5 ] .hh.b0 ;
- mem [(long) r + 5 ] .hh.b0 = 2 ;
- if ( mem [(long) r + 4 ] .cint == 0 )
- mem [(long) r + 6 ] .gr = 0.0 ;
- else if ( ( mem [(long) r + 5 ] .hh.b1 == 0 ) && ( mem [(long) r + 1 ] .cint -
- t > mem [(long) r + 4 ] .cint ) )
- mem [(long) r + 6 ] .gr = 1.0 ;
- else mem [(long) r + 6 ] .gr = ( mem [(long) r + 1 ] .cint - t ) / ((double)
- mem [(long) r + 4 ] .cint ) ;
- }
- mem [(long) r + 1 ] .cint = w ;
- mem [(long) r ] .hh.b0 = 0 ;
- }
- else {
- mem [(long) r + 1 ] .cint = mem [(long) q + 1 ] .cint ;
- if ( t == mem [(long) r + 3 ] .cint )
- {
- mem [(long) r + 5 ] .hh.b0 = 0 ;
- mem [(long) r + 5 ] .hh.b1 = 0 ;
- mem [(long) r + 6 ] .gr = 0.0 ;
- }
- else if ( t > mem [(long) r + 3 ] .cint )
- {
- mem [(long) r + 5 ] .hh.b0 = 1 ;
- if ( mem [(long) r + 6 ] .cint == 0 )
- mem [(long) r + 6 ] .gr = 0.0 ;
- else mem [(long) r + 6 ] .gr = ( t - mem [(long) r + 3 ] .cint ) / ((double)
- mem [(long) r + 6 ] .cint ) ;
- }
- else {
- mem [(long) r + 5 ] .hh.b1 = mem [(long) r + 5 ] .hh.b0 ;
- mem [(long) r + 5 ] .hh.b0 = 2 ;
- if ( mem [(long) r + 4 ] .cint == 0 )
- mem [(long) r + 6 ] .gr = 0.0 ;
- else if ( ( mem [(long) r + 5 ] .hh.b1 == 0 ) && ( mem [(long) r + 3 ] .cint -
- t > mem [(long) r + 4 ] .cint ) )
- mem [(long) r + 6 ] .gr = 1.0 ;
- else mem [(long) r + 6 ] .gr = ( mem [(long) r + 3 ] .cint - t ) / ((double)
- mem [(long) r + 4 ] .cint ) ;
- }
- mem [(long) r + 3 ] .cint = w ;
- mem [(long) r ] .hh.b0 = 1 ;
- }
- mem [(long) r + 4 ] .cint = 0 ;
- if ( u != memtop - 4 )
- {
- mem [(long) u ] .hh .v.RH = mem [(long) r ] .hh .v.RH ;
- mem [(long) r ] .hh .v.RH = mem [(long) memtop - 4 ] .hh .v.RH ;
- r = u ;
- }
- r = mem [(long) mem [(long) r ] .hh .v.RH ] .hh .v.RH ;
- s = mem [(long) mem [(long) s ] .hh .v.RH ] .hh .v.RH ;
- } while ( ! ( r == 0 ) ) ;
- }
- else if ( mem [(long) q ] .hh.b0 == 2 )
- {
- if ( ( mem [(long) q + 1 ] .cint == - 1073741824 ) )
- mem [(long) q + 1 ] .cint = mem [(long) p + 1 ] .cint ;
- if ( ( mem [(long) q + 3 ] .cint == - 1073741824 ) )
- mem [(long) q + 3 ] .cint = mem [(long) p + 3 ] .cint ;
- if ( ( mem [(long) q + 2 ] .cint == - 1073741824 ) )
- mem [(long) q + 2 ] .cint = mem [(long) p + 2 ] .cint ;
- if ( o != 0 )
- {
- r = mem [(long) q ] .hh .v.RH ;
- mem [(long) q ] .hh .v.RH = 0 ;
- q = hpack ( q , 0 , 1 ) ;
- mem [(long) q + 4 ] .cint = o ;
- mem [(long) q ] .hh .v.RH = r ;
- mem [(long) s ] .hh .v.RH = q ;
- }
- }
- s = q ;
- q = mem [(long) q ] .hh .v.RH ;
- }
- flushnodelis ( p ) ;
- popalignment () ;
- t = curlist .auxfield ;
- p = mem [(long) curlist .headfield ] .hh .v.RH ;
- q = curlist .tailfield ;
- popnest () ;
- if ( curlist .modefield == 201 )
- {
- doassignment () ;
- if ( curcmd != 3 )
- {
- {
- if ( interaction == 3 )
- wakeuptermin () ;
- printnl ( 133 ) ;
- print ( 1018 ) ;
- }
- {
- helpptr = 2 ;
- helpline [ 1 ] = 748 ;
- helpline [ 0 ] = 749 ;
- }
- backerror () ;
- }
- else {
- getxtoken () ;
- if ( curcmd != 3 )
- {
- {
- if ( interaction == 3 )
- wakeuptermin () ;
- printnl ( 133 ) ;
- print ( 1014 ) ;
- }
- {
- helpptr = 2 ;
- helpline [ 1 ] = 1015 ;
- helpline [ 0 ] = 1016 ;
- }
- backerror () ;
- }
- }
- popnest () ;
- {
- mem [(long) curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 5278 ] .cint
- ) ;
- curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
- }
- {
- mem [(long) curlist .tailfield ] .hh .v.RH = newparamglue ( 3 ) ;
- curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
- }
- mem [(long) curlist .tailfield ] .hh .v.RH = p ;
- if ( p != 0 )
- curlist .tailfield = q ;
- {
- mem [(long) curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 5279 ] .cint
- ) ;
- curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
- }
- {
- mem [(long) curlist .tailfield ] .hh .v.RH = newparamglue ( 4 ) ;
- curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
- }
- curlist .auxfield = t ;
- resumeafterd () ;
- }
- else {
- curlist .auxfield = t ;
- mem [(long) curlist .tailfield ] .hh .v.RH = p ;
- if ( p != 0 )
- curlist .tailfield = q ;
- if ( curlist .modefield == 1 )
- buildpage () ;
- }
- }
-